home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 11 / AMUG BBS in a Box Volume XI (April 1994) (MacWizards).iso / Files / Tele / Pete Johnson / TExport 2.0<source>.sit / TExpHostFile.p < prev    next >
Encoding:
Text File  |  1991-06-19  |  5.0 KB  |  183 lines  |  [TEXT/PJMM]

  1. unit HostFile;
  2.  
  3. {    Created June 15, 1989.                                                }
  4.  
  5. {    Next four lines handle Debug, Names, Overflow and Range        }
  6. {    checking options in compiler.                                            }
  7.  
  8. interface
  9.  
  10.     uses
  11.         Globals, HelloTabby;
  12.  
  13.     var
  14.         CLPath, ULPath, MESSAGESPath, SysopName: STR255;
  15.         NextLaunchDateRec: DateTimeRec;
  16.         MsgPath: STR255;
  17.         LowMsg, HiMsg, MSGTXTLength: longint;
  18.  
  19.     function ReadConfig: boolean;
  20.  
  21.     procedure ReadMESSAGES;
  22.  
  23.     procedure MakeTextFile (FileName: STR255);
  24.  
  25.     procedure FrameDItem (dLog: DialogPtr; iNum: integer);
  26.  
  27. implementation
  28.  
  29. {-----------------------------------------------------------------    }
  30.  
  31.     procedure FrameDItem;
  32.  
  33.         var
  34.             iBox: Rect;
  35.             iType: integer;
  36.             iHandle: Handle;
  37.             oldPenState: PenState;
  38.  
  39.     begin
  40.         GetPenState(oldPenState);
  41.         GetDItem(dLog, iNum, iType, iHandle, iBox);
  42.         InsetRect(iBox, -4, -4);
  43.         PenSize(3, 3);
  44.         FrameRoundRect(iBox, 16, 16);
  45.         SetPenState(oldPenState)
  46.     end;
  47.  
  48. {-----------------------------------------------------------------    }
  49.  
  50.     procedure MakeTextFile;
  51.  
  52. { Procedure sets up QUED-compatible text  file                                }
  53.  
  54.         var
  55.             fndrInfo: FInfo;
  56.  
  57.     begin
  58.         Err := GetFInfo(FileName, vRefNum, fndrInfo);
  59.         if Err = noErr then
  60.             begin
  61.                 fndrInfo.fdType := 'TEXT';
  62.                 fndrInfo.fdCreator := CreatorType;
  63.                 Err := SetFInfo(FileName, vRefNum, fndrInfo);
  64.             end
  65.         else
  66.             Err := Create(FileName, vRefNum, CreatorType, 'TEXT');
  67.     end;
  68.  
  69. { ------------------------------------------------------ }
  70.  
  71.     function ReadConfig;
  72.  
  73. {    Reads Config file and returns Path:CallerLog, Path:UserLog, Path:MESSAGES, SysopName (all caps) and    }
  74. {    NextLaunchDateRec.                                                                                                    }
  75.  
  76.         var
  77.             AString: string;
  78.             ALongInt: LongInt;
  79.             ConfigRefNum: integer;
  80.             FileEnd, CharsToSend, NextLaunchTime: longint;
  81.             ConfigErr: OSErr;
  82.             ConfigErrorFlag: boolean;
  83.  
  84.     begin
  85.  
  86.         ConfigErrorFlag := false;
  87.  
  88.         ConfigErr := GetVol(@gVolName, VRefNum);        { Get volume ref # for default volume }
  89.         if (ConfigErr <> NoErr) then
  90.             ConfigErrorFlag := true;
  91.         MESSAGESPath := '';
  92.         ULPath := '';
  93.         CLPath := '';
  94.         SysopName := 'SYSTEM OPERATOR';
  95.         ConfigErr := FSOpen(concat(gDefaultPath, 'Config'), VRefNum, ConfigRefNum);
  96.         if (ConfigErr = NoErr) then
  97.             begin
  98.                 ConfigErr := GetEOF(ConfigRefNum, FileEnd);
  99.                 if (ConfigErr = NoErr) then
  100.                     begin
  101.                         if (FileEnd > 317) then        {    Is file longer than our deepest SetFPos (it should be 349)?    }
  102.                             begin
  103.                                 CharsToSend := 41;
  104.                                 ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 57);
  105.                                 if (ConfigErr <> NoErr) then
  106.                                     ConfigErrorFlag := true;
  107.                                 ConfigErr := FSRead(ConfigRefNum, CharsToSend, @AString);
  108.                                 if (ConfigErr <> NoErr) then
  109.                                     ConfigErrorFlag := true;
  110.                                 if length(AString) > 0 then
  111.                                     ULPath := AString;
  112.                                 ULPath := concat(ULPath, ':UserLog');
  113.  
  114.                                 if (ConfigErrorFlag = false) then
  115.                                     begin
  116.                                         CharsToSend := 41;
  117.                                         ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 98);
  118.                                         if (ConfigErr <> NoErr) then
  119.                                             ConfigErrorFlag := true;
  120.                                         ConfigErr := FSRead(ConfigRefNum, CharsToSend, @AString);
  121.                                         if (ConfigErr <> NoErr) then
  122.                                             ConfigErrorFlag := true;
  123.                                         if length(AString) > 0 then
  124.                                             CLPath := AString;
  125.                                         CLPath := concat(CLPath, ':CallerLog');
  126.                                     end;
  127.  
  128.                                 if (ConfigErrorFlag = false) then
  129.                                     begin
  130.                                         CharsToSend := 80;
  131.                                         ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 139);
  132.                                         if (ConfigErr <> NoErr) then
  133.                                             ConfigErrorFlag := true;
  134.                                         ConfigErr := FSRead(ConfigRefNum, CharsToSend, @AString);
  135.                                         if (ConfigErr <> NoErr) then
  136.                                             ConfigErrorFlag := true;
  137.                                         if length(AString) > 0 then
  138.                                             MESSAGESPath := AString;
  139.                                         MESSAGESPath := concat(MESSAGESPath, ':MESSAGES');
  140.                                     end;
  141.  
  142.                                 if (ConfigErrorFlag = false) then
  143.                                     begin
  144.                                         CharsToSend := 31;
  145.                                         ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 317);
  146.                                         if (ConfigErr <> NoErr) then
  147.                                             ConfigErrorFlag := true;
  148.                                         ConfigErr := FSRead(ConfigRefNum, CharsToSend, @AString);
  149.                                         if (ConfigErr <> NoErr) then
  150.                                             ConfigErrorFlag := true;
  151.                                         if length(AString) > 0 then
  152.                                             SysopName := AString
  153.                                     end;
  154.  
  155.                                 if (ConfigErrorFlag = false) then
  156.                                     begin
  157.                                         CharsToSend := 4;
  158.                                         ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 308);
  159.                                         if (ConfigErr <> NoErr) then
  160.                                             ConfigErrorFlag := true;
  161.                                         ConfigErr := FSRead(ConfigRefNum, CharsToSend, @ALongInt);
  162.                                         if (ConfigErr <> NoErr) then
  163.                                             ConfigErrorFlag := true;
  164.                                         Secs2Date(ALongInt, NextLaunchDateRec);
  165.                                     end;
  166.  
  167.                             end    {    if FileEnd > 317        }
  168.                         else
  169.                             ConfigErrorFlag := true;
  170.                     end    {    Error on get eof of Config    }
  171.                 else
  172.                     ConfigErrorFlag := true;
  173.             end    {    Error on open Config    }
  174.         else
  175.             ConfigErrorFlag := true;
  176.         ConfigErr := FSClose(ConfigRefNum);
  177.         if ConfigErrorFlag | (ConfigErr <> NoErr) then
  178.             ReadConfig := false
  179.         else
  180.             ReadConfig := true
  181.     end;
  182. { ------------------------------------------------------ }
  183. end.    {    Unit    }